Skip to main content

Flash as2.0代码大全与Flash制作技巧

外部调用swf

on (release) {
loadMovieNum("service.swf", 1);
}

外部调用数据

loadVariablesNum("about.txt", 0);
System.useCodepage = true;//中文

音乐加入

mySound = new Sound();
mySound.attachSound("1");
mySound.start();

关闭指定音乐

mySound.stop("1");

外部调用音乐

mySound=new Sound();
mySound.loadSound("music.mp3",true);
mySound.start(0,100)

关闭音乐

mySound.stop();

链接场景:

on (release) {
gotoAndStop("猫的历史",1);
}

外部调用

on (release) {
loadmovienum("a.swf",1)
}

清空文本框

_root.text=""
On(Release)
Set Variable:"input" = ""
Set Variable:"output" = ""
End On

轻松实现Flash的全屏播放

许多人都看过这样的效果:把光盘放入光驱后,光盘自动运行,接着便是一段Flash制作的开场动画,动画是全屏播放的,且右键点击无效,动画播放结束后,出现"关闭"按钮,单击该按钮后,全屏动画关闭。其实上面提到的全屏播放以及取消右键菜单等效果都是靠Fscommand指令在发挥作用。 Fscommand指令主要是用来控制Flash影片播放器的,但也可以用来打开其它的应用程序。 Fscommand指令只有在Flash影片播放器执行时才有效(.swf和.exe),在Flash制作过程中 ,按"Ctrl+Enter"预览动画,以及把动画发布成网页文件时,此指令无法发挥它的功能 。 Fscommand指令使用的语法是:Fscommand("command","arguments") Command是指令的相关命令,arguments是命令的参数。 下面我们就来讲讲如何通过Fscommand指令来实现全屏播放、取消Flash播放时的右键

菜单以及关闭Flash动画。

  1. 全屏播放Flash
    "Fullscreen"是全屏的意思,在默认的情况下,Flash动画不是以全屏播放(false ),如果需要让动画以全屏状态播放,就必须把Fullscreen命令设置为True,写为: Fscommand ("Fullscreen","True"); 根据需要,我们可以把它写到帧、按钮、MC(Movie Clip)中。
  2. 取消右键菜单
    Showmenu命令是用来设置是(True)否(false)显示Flash动画播放器的快捷菜单的 全部指令,即右击鼠标时弹出的菜单,默认为True,如果要取消弹出的菜单,必须在第一 帧这样设置: Fscommand ("showmenu","false");
  3. 关闭动画
    quit命令是用来关闭播放器的.swf和.exe文件,该命令没有参数,写为: fscommand ("quit"); 如果你想在flash动画结束时出现一个关闭动画的按钮,可以按下面的步骤做。 执行"Insert"下的"New Symbol"(或按Ctrl+F8),在弹出的窗口中选Button,然 后制作一个简单的按钮,回到场景中,选中最后一帧,从"Library"中把刚刚建立的按钮 拖到场景中,因为该按钮在动画的最后才显示。 给按钮写上如下代码,则实现按下按钮即关闭flash动画。 on (release) { fscommand ("quit"); }

一、几种Action命令

1.影片的播放与停止:
Play( );//播放命令 stop( );//停止命令

2.改变Frame流向命令
gotoAndPlay(frame) //跳到指定的画面并连续播放。 gotoAndStop(frame) //跳到指定的画面并停止播放。 gotAndplay("场景名称",frame)//跳到指定场景帧并连续播放。 gotoAndStop("场景名称:,frlme)//跳到指定场景帧并停止播放。 nextFrame( );//跳到下一帧播放; PrevPrame( );//跳到上一帧播放。

3.控制影片剪辑的播放与停止:tellTarget命令
如:tellTarget("C1") {gotoAndStop(2);}//跳影片剪辑实例C1的第2帧并停止。

二、几种功能元件的制作方法

1.计时器的制作
单击菜单Insert/new symbol,在弹出的对话框中输入插入的符号名称(如:计时器),确 定后选择文字工具,属性为动态(Dynamic text),在第一帧中画两个文本框。分别设置变 量名为munite和timer,在两个文本框之间画一个形如冒号的圆点(这两个圆点可以做成一个 符号,类型为电影片段,每秒闪动一次.然后拖入到两文本框之间。在第二帧插入帧。在 第一帧输入动作脚本(Action)如下: //设置时间的初值

if(!started) {
start_time=getTimer();
started=true;
timer=0;
i=o;
munite=0;
}
x=getTimer()-start_time;//计算时间的变化
x=int(x/1000); //时间的单位为1000分之一秒
y=x-60*i
if (y>59)
{i=i+1;munite=munite+1
timer=timer+1:
}
else
{timer=y}

该符号制作完毕后。将其拖入主场景中即可。

2.智能判断速择题,并作正误提示

单击菜单Insert/new symbo1,在弹出的对话框中输入插入的符名称。如:"对错提示"。 符号类型为"电影片段"。在第一帧输入文本"在括号内输入答案,按enrer键确定" 在 该帧上输入动作脚本: _root.flah=false;_root.ans=" ";gotoAndStop(1);在第16帧插入空关键帧。在该帧上 画一个形如"x"的图或输入文本"x",在第30帧插入关键帧,帧AAction为_root.ans=" ":gotoAndStop(31);在第31帧插人空白关键帧,在该帧上输人静态文本"请重作,按e nter键确定。"在该帧输入脚本:"stop();"至此,该符号制作主或:例如: 第1题:1十1十( ) A.2 B.3 C.4 D.0 在上例括号位置插入动态文本框,不输入任何内容。该文本框变量名为:ans。在该帧适当 位置插入电影"对错提示",该电影片断名属性为"ql",在该电影片断上输人脚本:

//键盘事件控制程序
onClipEvent(keyDown)
}
//取得按键的键值
keycode=Key.getCode();
//判断是否为Enter键
if(keycode==Key.ENTER) {
//判断输入的答案是否正确
//answer=Number(A)
if(_root,ans=="A" or _root.ans=="a"{
//显示"答对了"信息
tellTsrget(_root.q1) {
gotoAndPlay(2);
}
} else {
//显示"答错了"信息
tellTarget(_root.q1) {
gotoAndplay(16)
}
}
}
}

3.声音的加载和控制
插入一段音乐:在Pile/Import to Library中,找到要插入的音乐(如战马奔腾),打开符 号库,找到"战马奔腾"符号,单击右键,在弹出的菜单中单击Linkage…命令,再在弹出 的菜单中选中Export for ActionSc选项,在Indentify框内输入标识符:如music。 在需要播放的帧插入如下脚本: soun=new Sound();//创建声音实例 sound.attachSound("music");//将音乐music链接到sound实例 sound.start(0,2);//播放音乐2遍 sound.setVolume(70):该音乐的音量为70%。 以上加载音乐通过帧加载,也可以通过按钮加载。 停止音乐的方法:制作一个按钮,在按钮上输人脚本:

on(release)
{
sound.stop();
}

4.如何用键盘控制帧的跳转
有的教师喜欢用键盘进行操作,如何使这类操作方使自如呢?用Flash MX制作的方法如下:

制作一个符号(如"知识回顾"),符号类型为"电影片段"。在这个符号中将需要回顾的 知识点逐帧展示,每帧动作脚本为:stop()回到主场景,在需要的帧插入该符号,该帧脚 本为:stop();插入后.单击该符号.输人脚本:

onClipEvent(Key Down) {//键盘响应,按下任一键时响应该命令
nextFrame();
}

这样即实现了按任一键便可跳转到指定帧的效果。此例仅仅是一种基本方法,读者朋友在 应用时可以有更多的扩展。

5.鼠标指向显示填空题答案
显示一些问题的答案,可以将这一答案制成—个按钮,在这一按钮的Up帧可以为空白关键 帧,其它帧为答案内容。在问题的答案处插入该按钮,在该帧输入脚本: on(release) { gotoAndStop;//第i帧将答案固定显示在屏幕上 flash场景之间相互跳转的实现方法

作者:佚名 来源:InterNet 加入时间:2005-2-25 在制作flash动画的时候,可能会有有很的mc 有时会把它放到几个场景中,那么在场景中的跳转如何实现呢?

  1. 方法一:(使用telltarg… 方法一:(使用telltarget命令) 按钮上的as为:
on (release) {
tellTarget ("/") {
gotoAndPlay ("场景 1", 1);
}
}
  1. 方法二(用gotoandpla… 方法二(用gotoandplay命令) 主场景2中的mc放到场景2的时间轴上 按钮的as:
on release {
gotoAndPlay("场景1",1)
}

并且在最后一帧加stop() 问题就可以解决了: 3. 方法三(利用路径_root.g… 方法三(利用路径_root.gotoandplay()) 第二个场景2里面只有一个mc,在这个mc的最后一帧是stop和一个replay按 钮 按钮的as:_root.gotoAndPlay(1) 【即告知按钮回到场景1的第一帧】

  1. 方法四(给场景起不同的名字) … 方法四(给场景起不同的名字) 如果你的as这样写: 第二个sence里面只有一个mc,在这个mc的最后一帧是stop和一个repl ay按钮 按钮的as:
on release {
gotoAndPlay("sence1",1)

结果按下后却是从这个mc的第一帧开始播放,而不是从sence1的第一帧 这是因为主场景的名字默认为senceN MC里也可以有多个场景,而mc也是默认为senceN 所以当你在MC用上gotoAndPlay ("scene1", 1);时,指的是所在场景中MC里的第一帧,而 不是主场景 解决的方法,就是给场景定义不同的名字 scene1我们改名为:主场景 scene2我们改名为:次场景1 正确的as应该为:

on (release) {
tellTarget (_root) {
gotoAndPlay (1);
}
}

如果想实现按钮点击后从次场景播放就可以在按钮上写上:

on (release) {
tellTarget (_root.次场景) {
gotoAndPlay (1);
}
}
  1. 方法五(利用标签label) … 方法五(利用标签label) 我们在控制动画的时候一般也不是从开始播放, 可能是希望从某个场景的某一个关键帧开 始播放,那么标签是 最好的实现方法; 例如我们希望点击上面的按钮的时候让动画从主场景中的label1开始 播放,那么按钮上的 as应该为:
on (release) {
tellTarget (_root) {
gotoAndPlay ("label1");
}

例如有3个场景,我们希望点击上面的按钮的时候让动画从次场景1中的label4开始播放, 那么按钮上的as应该为:

on (release) {
tellTarget (_root) {
gotoAndPlay ("次场景 1", "label4");
}
}

如果

想实现按钮点击后从次场景播放 就可以在按钮上写上:

on (release) {
tellTarget (_root.次场景) {
gotoAndPlay (1);
}
}
  1. 什么叫矢量图?
    矢量图可以任意缩放而不影响Flash的画质,位图图像一般只作为静态元素或背景图,Fla sh并不擅长处理位图图像的动作,应避免位图图像元素的动画。
  2. 如何迅速地对齐不同Frame中的物件? 用 Inspector "Ctrl+Alt+I" 直接输入坐标。 或是工具栏〉〉窗口〉〉面板〉〉排列"Ctrl+K" 调出排列面板来。图例
  3. 怎样调节一个Symbol/MC地透明度? 选中Symbol/MC,菜单栏找到Modify(修改) 〉〉 Instance (实例)〉〉Color effect (效果 )〉〉 Alpha(透明度) 调整就可以了
  4. 做好地Flash放在html上面以后,它老是循环,怎么能够让它不进行循环? 最后一个祯地Action设置成Stop(停止)
  5. 怎样给我的FLASH做一个预加载地LOADING? 用Action语法地if frame is loaded来实现,新建一层,这层专门放Action, 第一帧, ifFrameLoaded ("场景", frame) //假如场景中地祯数已经载入 goto and play() //跳至并播放某某祯(自己设定) {} 第二帧, goto and play("场景1", 1)//跳至并播放第一祯循环 再加上一个load地MC循环播放在这两帧的中间,就OK了。 什么?你要非常详细地LOADING?那就当这个源码吧,够详细了. 源码下载
  6. 怎样点击一个按钮打开一个页面html而不是一个祯. 制作一个按钮,上面地AS直接写: on (release) getURL (".html"); {} 这里地.html就是你要打开地页面文件名,当然也可以是某某URL地址,比如说http://ww w.flash8.net
  7. 我在按钮地OVER祯放置了一个很大地MC,为什么我要没有点击到按钮鼠标就变成了手地状 态? 按钮真正激活区是在HIT(按下)祯地位置,如果想控制按钮的位置为一定值,可以在HIT祯绘 制一个透明地图形来判断.
  8. 如果屏蔽鼠标右键?FS命令都是什么意思? fscommand ("fullscreen", "true/false");(全屏设置,TRUE开,FALSE关) fscommand ("showmenu", "true/false");(右键菜单设置,TRUE显示,FALSE不显示)

fscommand ("allowscale", "true/false");(缩放设置,TRUE自由缩放,FALSE调整画面 不影响影片本身的尺寸) fscommand ("trapallkeys", "true/false");(快捷键设置,TRUE快捷键开,FALSE快捷键 关) fscommand ("exec");(EXE程序调用) fscommand ("quit");(退出关闭窗口) 11. 在FLASH中的字体总是很模糊,用变清晰地办法吗? 写好文本以后CTRL+T打开文本设置面板,在最后地文本框选项那里框选使用设计字体就行了 .(注意最好使用宋体,尺寸为12或者8,这样比较工整) 12. 我想做一个MTV,怎么导入声音呀? 很简单,CTRL+R导入你地声音文件就行了. 13. 我制作地MTV声音和歌词总是不同步. CTRL+F打开祯控制面板,右边找到声音选项卡,调整声音地同步效果为STREM(音频数据流)模 式就行了. 14. 为什么我做出来地MTV文件很大呀? 参看这篇贴子 15. FLASH地发布设置都有些什么?透明背景怎样设置? 图解图1图2图3 在Dreamewaver中地设置: 图解 (由FLASHWEB提供图材) 16. 怎样可以做出很漂亮地字体特效? 用第三方软件Swish和Swfx这些,闪吧地软件资源有下载. 17. 如何优化我地FLASH? 参看这篇贴子 18. 我在ACTION面板地高级模式为什么字体总是很小? 19. 如何加载一个SWF文件 loadMovieNum地技巧 添加一个空地MC。实体名为ok,ACTION: loadMovie ("dr/test.swf", "_root.ok"); 控制这个MC的位置,大小等相对属性(Property)就会影响调入SWF的位置和大小。 setProperty ("mc", _xscale, "**"); setProperty ("mc", _yscale, "**"); setProperty ("mc", _x, "**"); setProperty ("mc", _y, "**"); setProperty ("mc", _Alpha, "****"); ………… 20. 如何导入一个背景透明度效果比较好地位图? 推荐使用PNG格式(FIREWORK),FLASH对PNG位图地融合透明效果支持相当好。 21. 问: 如何用actionscript将页面设为首页和加入收藏夹? 答: 一,用getURL的方法: 设为首页: on (release) getURL(";void document.links[0].setHomePage(‘http://www.flashempire.com/);", "_se lf", "POST"); {} 加入收藏夹: on (release) getURL(" window.external.AddFavorite(‘http://www.flash8.net,’闪 吧’);", "_self", "POST"); {} 二,用fscommand的方法,有点复杂

  1. 先在flash的按钮上添加代码: 首页: on (release) fscommand("setHomePage", "http://www.flash8.net); {} 收藏夹: on (release) fscommand("addFavorite", "http://www.flash8.net|闪吧); {} 然后在发布设置中选择flash with fscommand,发布成html
  2. 修改html: 找到 // Handle all the the FSCommand messages in a Flash movie function sethomepage_DoFSCommand(command, args) {} 这一段,修改成: // Handle all the the FSCommand messages in a Flash movie function sethomepage_DoFSCommand(command, args) var sethomepageObj = InternetExplorer ? sethomepage : document.sethomepage; if (command == "setHomePage") { document.links[0].style.behavior = "url(#default#homepage)"; document.links[0].setHomePage(args); {} else if (command == "addFavorite") args = args.split("|"); window.external.AddFavorite(args[0], args[1]); {} } 最后,如果html里一个链接都没有,还需?lt;SCRIPT LANGUAGE=javascript>这句的前面添 加一句
  3. 问: 怎么让动画放完后自动关闭? 答: 在最后一桢的ACTION里选FSCOMMOND一项,然后在右边选中QUIT,就可以了
  4. 问: 怎样引入透明的位图? 答: 最好输入png文件。png是fireworks文档。当然你也可以输入GIF89a格式的透明GIF图 片。
  5. 问: 如何在Flash中打开一个定制的浏览器新窗口? 答: 这个问题,很常见,也讨论过无数次,以前的一些有用的帖子找不到了,现在重新整 理如下: 常用也是很简单的方法是用类似 Get URL (";")

这样的一句,但有很多问题,比如打开了新窗口后,原窗口的内容也被替代了。

  1. 在Flash中需要执行打开新窗口动作的地方插入以下语句: FS Command ("open_window", "filename.htm;newwin;toolbar=no,location=no,status= no, menubar=no,scrollbars=no,resizable=no,width=320,height=200″) 其中Arguments: filename.htm 要打开的文件名 newwin 新窗口的名字 toolbar=no,location=no,status=no, menubar=no,scrollbars=no,resizable=no,width=320,height=200 新窗口的有关属性,包 括尺寸 注意以上三部分要用分号";"分隔
  2. 在File>Publish setting…中设定 HTML中的Tempalte : Flash with FSCommand 发布
  3. 编辑发布生成的html文件,找到以下一段:
<SCRIPT LANGUAGE=javascript>
<!–
var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
// Handle all the the FSCommand messages in a Flash movie
function Movie1_DoFSCommand(command, args)
var Movie1Obj = InternetExplorer ? Movie1 : document.Movie1;
//
// Place your code here…
//
{}

改为:

<SCRIPT LANGUAGE=javascript>
<!–
var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
// Handle all the the FSCommand messages in a Flash movie
function Movie1_DoFSCommand(command, args)
var Movie1Obj = InternetExplorer ? Movie1 : document.Movie1;
// Place your code here…
if (command == "open_window")
{
arg_array=args.split(";");
window.open(arg_array[0],arg_array[1],arg_array[2]);
{}
}

OK! 如果是插入现有的html页,可以先发布,再copy相应的代码到html文件。 25. 问: 如何用action控制倒放? 答: 做一个mc放在合适的地方,里面有两帧 第一帧:

If (GetProperty ("/a",_currentframe)<=1)
Begin Tell Target ("/a")
Go to and Stop (GetProperty ("/a",_totalframes))
End Tell Target
Else
Begin Tell Target ("/a")
Go to and Stop (GetProperty ("/a",_currentframe)-1)
End Tell Target
End If

第二帧:

Go to and Play (1)

这样就可以让/a倒放 但是还有一个问题无法解决: 如果我只想停一段呢? 比如说,我在第十个关键帧处加了一个STOP,在第三十个关键帧处加了一个STOP,现在想 倒到STOP处停下来,却没有办法做到。

If (GetProperty ("/a",_currentframe)<=1)
Begin Tell Target ("/a")
Go to and Stop (GetProperty ("/a",_totalframes))
End Tell Target
Else
Begin Tell Target ("/a")
Go to and Stop (GetProperty ("/a",_currentframe)-1)
End Tell Target
End If

第二帧: Go to and Play (1) 这一段肯定放在一个mc 里, 假设这个mc为/b 在/a需要停止的帧理设置

Begin Tell Target ("/b")
stop
End Tell Target
stop

就可以了 26. 问: 内部声音角色与外部声音角色有何差异? 答: 没什么太大的区别 外部文件如果导如的话可以降低文件的大小 在发布的时候或者做成光盘的时候需要和DCR文件一起走,并且始终保持相对路径不变

还有一个流式播放的问题 如果导入的声音文件过大就会影响同步效果,声音滞后。(因为Director在播放内部声音 之前就将其预栽到RAM中)外部声音文件是流式的,一边播放,一边下载。但要注意连接路 径问题。 27. 问: 如何使声音无限循环? 答: 将声音的循环次数定义成足够大,如果你的音乐设为STREM(音频数据流)那你的swf文 件也会足够大。 28. 问: 如何控制声音的播放及停止 答: 在library 里右健点击声音文件,选linkage… 设置Export This Symbol entifier: 取名为"sound" 然后就可以在stage里面设置了 s = new Sound(); s.attachSound("sound"); 要让声音sound关掉只须 执行: s.stop(); 要让他开始播放就是 s.start(); 29. 问: 如何调入SWF文件及控制它的大小和位置? 答:

  • 一、如何调入一个SWF文件:
    调入一个SWF置给一个层loadMovieNum ("path/movieFile.swf", 0); 其"path/movieFile.swf"为要调入文件的地址,"0"为层号,"0"为第0层; 调入一个SWF置给一个MC loadMovie ("path/movieFile.swf", "MC_Name");其"path/movieFile.swf"为要调入文 件的地址,"MC_Name"是MC的名字。
  • 二、如何改变调入后的SWF大小:
    setProperty ("MC_Name", _xscale, size_x); setProperty ("MC_Name", _yscale, size_y); "MC_Name"顾名思义是那个MC的名字了,"_xscale"和"_yscale"是指这个MC的X与Y点 的位置,这个位置是用来控制MC大小的。其"size_x"和"size_y"为设定这个MC具体大 小的数值。
  • 三、如何改变其位置:
    一个简单的方法是,我们可以来移动那个已给置入MOVIE文件的MC,就像我们用来改变一张 图的位置那样用鼠标拖动它。 另一个方法是利用setProperty来进行改变这个MC的位置。 setProperty ("MC_Name", _x, "position_x"); setProperty ("MC_Name", _y, "position_y"); "MC_Name"是MC的名字,"_x"和"_y"指的是X坐标和Y坐标点,而"position_x"与" position_y"是位置具体的数值。 希望各位能明白我这个简单的教程!以上代码均为FLASH5为标准。 作者: 雨花石
  1. 问: 如何优化Flash动画,使文件更小,播放更流畅?
    答: Flash作为Macromedia公司出品的网页制作与动画创作的专业软件,操作简便,功能强大,现已成为交互式矢量图形和Web动画事实上的标准。 但是,如果制作的Flash电影文件较大,动辄几百k的话,常常会让网上浏览者在不断 等待中失去耐心。对Flash电影进行优化就显得很有必要了,但前提是我们不能有损电影的 播放质量。